package cloud.smalla.utils;

import org.apache.commons.beanutils.BeanUtils;

import java.util.List;
import java.util.stream.Collectors;

public class BeanCopyUtil {
    /**
     * 单个对象的拷贝
     * @param object 对象
     * @param clazz 拷贝的对象
     * @return 返回拷贝后的对象
     */
    public static <T> T copyBean(Object object , Class<T> clazz){
        //创建目标对象
        T result = null;
        try {
            //实现bean拷贝
            result = clazz.newInstance();
            BeanUtils.copyProperties(result,object);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }


    /**
     * 集合的拷贝
     * @param list 集合对象
     * @param clazz 拷贝对象的字节码
     * @return 返回拷贝后的集合对象
     * @param <T> 泛型
     */
    public static <T,D> List<T> copyBeanList(List<D> list,Class<T> clazz){
        return list.stream()
                .map(o->copyBean(o,clazz))
                .collect(Collectors.toList());
    }
}
